﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using FastReport;
using FastReport.Data;
using FastReport.Preview;
using FastReport.Utils;
using Atlandiz.Data;
using System.IO;

namespace Atlandiz.EnvanterVeZimmetYonetimi
{
    public partial class ListeYazilim : DevExpress.XtraEditors.XtraForm
    {
        public bool ForSelection = false;
        public Report FReport = new Report();
        DataTable FormDataTable;

        public ListeYazilim()
        {
            InitializeComponent();
        }


        public void YazilimYukle()
        {
            string SorguEk = "";
            if (ShowHurda.Checked)
            {
                SorguEk = "";
            }
            else
            {
                SorguEk = " and y.isHurda=0 ";
            }

            if (Army.UserTipi != 1)
            {
                SorguEk += " AND y.DepoId IN (select id_depolar from KullaniciDepo where id_kullanici=" + Army.ActiveUserId + ") ";
            }

            string Sorgu = "Select \n" +
                "y.yID [Yazılım ID],\n" +
                "yu.yuFirmaUnvan [Yazılım Firma],\n" +
                "yi.yiAdi [Yazılım Adı],\n" +
                "ys.ySurum [Yazılım Sürüm],\n" +
                "t.tFirmaUnvan [Tedarikçi Firma],\n" +
                "y.LisansNo[Lisans No],\n" +
                "FORMAT(y.EnvanterGirisTarihi,'dd.MM.yyyy') [Envanter Giriş Tarihi],\n" +
                "FORMAT(y.LisBasTarih,'dd.MM.yyyy') [Lisans Başlangıç Tarihi],\n" +
                "FORMAT(y.LisBitTarih,'dd.MM.yyyy') [Lisans Bitiş Tarihi],\n" +
                "y.LisTuru [Lisans Türü],\n" +
                "y.Aciklama [Açıklama],\n" +
                "y.Maliyet [Maliyet],\n" +
                "y.ZimmetDegeri [Zimmet Değeri],\n" +
                "(Select DepoAdi from Depolar where id=y.DepoId) [Depo Adı]\n" +
                "   from Yazilim y \n" +
                "   left  join YazilimIsim yi on y.yiID=yi.yiID \n" +
                "   left  join YazilimSurum ys on y.ysID=ys.ysID \n" +
                "   left  join YazilimUretici yu on y.yuID=yu.yuID \n" +
                "   left  join Tedarikci t on y.tID=t.tID\n" +
                "where y.isDeleted=0 " + SorguEk + " ORDER BY y.yID Desc";

            DataTable dt = Army.SQL().GetDataTable(Sorgu);
            FormDataTable = dt;
            _lwYazilimlar.Items.Clear();


            foreach (DataRow item in dt.Rows)
            {
                ListViewItem ls = new ListViewItem(item[0].ToString());

                ls.SubItems.Add(item[1].ToString());
                ls.SubItems.Add(item[2].ToString());
                ls.SubItems.Add(item[3].ToString());
                ls.SubItems.Add(item[4].ToString());
                ls.SubItems.Add(item[5].ToString());
                ls.SubItems.Add(item[6].ToString());
                ls.SubItems.Add(item[7].ToString());
                ls.SubItems.Add(item[8].ToString());
                ls.SubItems.Add(item[9].ToString());
                ls.SubItems.Add(item[10].ToString());
                ls.SubItems.Add(item[11].ToString());
                ls.SubItems.Add(item[12].ToString());
                ls.SubItems.Add(item[13].ToString());

                _lwYazilimlar.Items.Add(ls);

            }


        }

        private void YazilimLst_Load(object sender, EventArgs e)
        {
            Army.EventConfirm = false;
            YazilimYukle();
        }

       public void KDuzenle()
        {
            FormYazilim YazilimFormu = new FormYazilim();
            YazilimFormu.KayID = int.Parse(_lwYazilimlar.SelectedItems[0].SubItems[0].Text);
            YazilimFormu.ShowDialog();
            YazilimYukle();
        }
       private void düzenleToolStripMenuItem_Click(object sender, EventArgs e)
       {
        if (_lwYazilimlar.SelectedItems.Count > 0)
       {
           KDuzenle();
           
       }
        else
        {
           MessageBox.Show("Lütfen, düzenlenecek kaydı seçiniz...");
        }

       }

       private void silToolStripMenuItem_Click(object sender, EventArgs e)
       {
           if (_lwYazilimlar.SelectedItems.Count > 0)
           {
               PopupAreYouSure SilOnay = new PopupAreYouSure();
               Army.EventMessage = "Seçilen Yazılım Silinecek,\nEmin misiniz?";
               SilOnay.ShowDialog();

               if (Army.EventConfirm)
               {
                   Army.SQL().cmd("Update Yazilim SET isDeleted=1 where yID=" + _lwYazilimlar.SelectedItems[0].SubItems[0].Text.ToString());
                   MessageBox.Show("Seçilen Yazılım Silindi.", "Kayıt Silindi.", MessageBoxButtons.OK, MessageBoxIcon.Information);
                   YazilimYukle();
                   //sil komutu
               }
           }

           //if (_lwYazilimlar.SelectedItems.Count > 0)
           //{
           //    DialogResult sonuc;
           //    sonuc = MessageBox.Show("Kaydı silmek istediğinize emin misiniz?", "Dikkat!", MessageBoxButtons.YesNo);
           //    if (sonuc == DialogResult.Yes)
           //    {
           //        SQL.cmd("Update Yazilim SET isDeleted=1 where yID=" + _lwYazilimlar.SelectedItems[0].SubItems[0].Text);
           //        MessageBox.Show("Kayıt, başarı ile silinmiştir.");
           //        YazilimYukle();
           //    }
           //}
           //else
           //{
           //    MessageBox.Show("Lütfen, silinecek kaydı seçin");
           //}
       }

       private void listView1_DoubleClick(object sender, EventArgs e)
       {
           if (_lwYazilimlar.SelectedItems.Count > 0 & ForSelection)
           {
               Army.SecilenID = int.Parse(_lwYazilimlar.SelectedItems[0].SubItems[0].Text);
               Army.EventConfirm = true;
               this.Close();
           }
       }

       private void _btnYeni_Click(object sender, EventArgs e)
       {
           FormYazilim y = new FormYazilim();
           y.ShowDialog();
           YazilimYukle();
       }

       private void _btnKapat_Click(object sender, EventArgs e)
       {
           this.Close();
       }

       private void _btnListeGuncelle_Click(object sender, EventArgs e)
       {
           YazilimYukle();
       }

       private void contextMenuStrip1_Opening(object sender, CancelEventArgs e)
       {

       }

       private void _btnAra_Click(object sender, EventArgs e)
       {
           string SorguEk = "";
           if (ShowHurda.Checked)
           {
               SorguEk = "";
           }
           else
           {
               SorguEk = " and y.isHurda=0 ";
           }

           string Sorgu = "Select \n" +
                "y.yID [Yazılım ID],\n" +
                "yu.yuFirmaUnvan [Yazılım Firma],\n" +
                "yi.yiAdi [Yazılım Adı],\n" +
                "ys.ySurum [Yazılım Sürüm],\n" +
                "t.tFirmaUnvan [Tedarikçi Firma],\n" +
                "y.LisansNo[Lisans No],\n" +
                "y.EnvanterGirisTarihi [Envanter Giriş Tarihi],\n" +
                "y.LisBasTarih [Lisans Başlangıç Tarihi],\n" +
                "y.LisBitTarih [Lisans Bitiş Tarihi],\n" +
                "y.LisTuru [Lisans Türü],\n" +
                "y.Aciklama [Açıklama],\n" +
                "y.Maliyet [Maliyet],\n" +
                "y.ZimmetDegeri [Zimmet Değeri],\n" +
                "(Select DepoAdi from Depolar where id=y.DepoId) [Depo Adı]\n" +
                "   from Yazilim y \n" +
                "   left  join YazilimIsim yi on y.yiID=yi.yiID \n" +
                "   left  join YazilimSurum ys on y.ysID=ys.ysID \n" +
                "   left  join YazilimUretici yu on y.yuID=yu.yuID \n" +
                "   left  join Tedarikci t on y.tID=t.tID\n" +
                "where y.isDeleted=0 " + SorguEk + " and \n" +
                         "yu.yuFirmaUnvan like '%" + _txtAraString.Text.ToString().Replace("'", "''") + "%' or \n" +
                         "yi.yiAdi like '%" + _txtAraString.Text.ToString().Replace("'", "''") + "%' or \n" +
                         "ys.ySurum like '%" + _txtAraString.Text.ToString().Replace("'", "''") + "%' or \n" +
                         "t.tFirmaUnvan like '%" + _txtAraString.Text.ToString().Replace("'", "''") + "%' or \n" +
                         "y.LisansNo like '%" + _txtAraString.Text.ToString().Replace("'", "''") + "%' or \n" +
                         "y.LisTuru like '%" + _txtAraString.Text.ToString().Replace("'", "''") + "%' or \n" +
                         "y.Aciklama like '%" + _txtAraString.Text.ToString().Replace("'", "''") + "%' \n";

           DataTable dt = Army.SQL().GetDataTable(Sorgu);
           _lwYazilimlar.Items.Clear();


           foreach (DataRow item in dt.Rows)
           {
               ListViewItem ls = new ListViewItem(item[0].ToString());

               ls.SubItems.Add(item[1].ToString());
               ls.SubItems.Add(item[2].ToString());
               ls.SubItems.Add(item[3].ToString());
               ls.SubItems.Add(item[4].ToString());
               ls.SubItems.Add(item[5].ToString());
               ls.SubItems.Add(item[6].ToString());
               ls.SubItems.Add(item[7].ToString());
               ls.SubItems.Add(item[8].ToString());
               ls.SubItems.Add(item[9].ToString());
               ls.SubItems.Add(item[10].ToString());
               ls.SubItems.Add(item[11].ToString());
               ls.SubItems.Add(item[12].ToString());
               ls.SubItems.Add(item[13].ToString());

               _lwYazilimlar.Items.Add(ls);

           }
           _txtAraString.Focus();
       }

       private void simpleButton1_Click(object sender, EventArgs e)
       {
           if (_lwYazilimlar.SelectedItems.Count > 0)
           {

               ListeNesneler NesnelerListe = new ListeNesneler();
               NesnelerListe.Urun_Id = Convert.ToInt32(_lwYazilimlar.SelectedItems[0].SubItems[0].Text);
               NesnelerListe.UrunTipi = 2;
               NesnelerListe.ShowDialog();
           }
           else
           {

               MessageBox.Show("Listeden bir ürün seçmelisiniz.");
           }
       }

       private void simpleButton3_Click(object sender, EventArgs e)
       {
           DataTable forReport = new DataTable();

           forReport = FormDataTable;
           forReport.TableName = "Datalar";
           FReport.RegisterData(forReport, "Datalar");
           FReport.GetDataSource("Datalar").Enabled = true;

           if (Army.ReportForYazilim.Length > 0 & File.Exists(Army.ProgramBaseEnvironmentPath + Army.ReportForYazilimListe))
           {
               FReport.Load(Army.ProgramBaseEnvironmentPath + Army.ReportForYazilimListe);
           }
           FReport.Design();

       }

       private void simpleButton4_Click(object sender, EventArgs e)
       {
           DataTable forReport = new DataTable();

           forReport = FormDataTable;
           forReport.TableName = "Datalar";
           FReport.RegisterData(forReport, "Datalar");
           FReport.GetDataSource("Datalar").Enabled = true;

           if (Army.ReportForYazilim.Length > 0 & File.Exists(Army.ProgramBaseEnvironmentPath + Army.ReportForYazilimListe))
           {
               FReport.Load(Army.ProgramBaseEnvironmentPath + Army.ReportForYazilimListe);
           }
           FReport.Show();

       }

       private void simpleButton5_Click(object sender, EventArgs e)
       {
           DataTable forReport = new DataTable();

           forReport = FormDataTable;
           forReport.TableName = "Datalar";
           FReport.RegisterData(forReport, "Datalar");
           FReport.GetDataSource("Datalar").Enabled = true;

           if (Army.ReportForYazilim.Length > 0 & File.Exists(Army.ProgramBaseEnvironmentPath + Army.ReportForYazilimListe))
           {
               FReport.Load(Army.ProgramBaseEnvironmentPath + Army.ReportForYazilimListe);
           }
           FReport.Print();
       }

       private void simpleButton2_Click(object sender, EventArgs e)
       {
           Random rnd = new Random();
           int DosyaAdEk = rnd.Next(99999999);

           saveFileDialog1.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
           saveFileDialog1.Filter = "Excel Dökümanı|*.xlsx";
           saveFileDialog1.Title = "Excel Aktarım";
           saveFileDialog1.FileName = "Yazilimlar-" + DosyaAdEk;
           saveFileDialog1.ShowDialog();
       }

       private void saveFileDialog1_FileOk(object sender, CancelEventArgs e)
       {
           if (saveFileDialog1.FileName != "")
           {
               Army.MakeExcelFromDatatable(FormDataTable, saveFileDialog1.FileName);
           }
           MessageBox.Show(saveFileDialog1.FileName + "\nDosya Aktarıldı.", "İşlem Tamam.", MessageBoxButtons.OK, MessageBoxIcon.Information);
       }

    }
}